home *** CD-ROM | disk | FTP | other *** search
/ IRIX 5.3 for Indy R4400 / IRIX 5.3 for Indy R4400 175MHz.img / dist / eoe2.idb / usr / etc / runnettest.z / runnettest
Text File  |  1995-02-28  |  5KB  |  142 lines

  1. #!/bin/sh
  2. #
  3. # runnettest -p proto [-d dest] [-R remote] [-L local] 
  4. #        [-r run tag] [-N nBytes] [-n nstreams]
  5. #               [-B singlesendsize]
  6. #
  7. # Executes a nettest session both locally and remotely. Not all nettest
  8. # arguments are # used by this script - it's intended to be a simple 
  9. # performance neasurement tool.
  10. # -p    Protocol. tcp, udp, unix (unix domain sockets), pipe, or file.
  11. # -d    Destination (hostname, host alias, fully qualified domain name, or
  12. #    IP address in dot format) to which the local host will send. 
  13. # -R    Address of the remote host (hostname, host alias, fully qualified 
  14. #    domain name, or IP address in dot format) which will send to the
  15. #    local host. 
  16. # -L     Address of the local host (hostname, host alias, fully qualified 
  17. #    domain name, or IP address in dot format) which the remote host
  18. #    will send to.
  19. # -r    Run tag. An integer or character string which will be used to label 
  20. #    output files. A tag of "5" will generate local output file out.5 (both
  21. #    sender's and receiver's output) for tests where the local host is 
  22. #    the sender, and remout.5 for tests where the remote host is the 
  23. #    sender. Defaults to 1.
  24. # -N    Total number of bytes to send. Defaults to 8 Meg (8*1024*1024, or
  25. #    8388608) in the 3.3-comparison case, to slightly more than 8 Meg 
  26. #    (4*1460*1460, or 8526400) in the optimized Ethernet TCP case, and 
  27. #    to slightly more than 80 meg (2000*4352, or 8704000) in the optimized
  28. #       FDDI TCP case. Optimized cases send only MTU-multiples for send
  29. #       sizes of 1 MTU or greater, so each packet will be MTU-sized.
  30. # -n    Number of instances of nettest to run concurrently. For TCP tests,
  31. #    this will be the number of connections to the receiving host. If not
  32. #    specified, n defaults to one.
  33. # -B    Buffer size to send when only a single run is desired. Defaults to the
  34. #       uncommented standard series defined below by "lengths".
  35. # Examples:
  36. # runnettest -p tcp -r 1 -d foo -n 3    : runs a TCP test with three concurrent
  37. #                      connections to foo as the target
  38. #                      host, and locally generates
  39. #                      output files called t1 and r1.
  40. #
  41. # runnettest -p udp -r 4 -R foo -L doo    : runs a single UDP testfrom the remote
  42. #                      host foo to the local host doo, and 
  43. #                      locally generates output files called
  44. #                      rt4 and rr4 .
  45. #
  46. # runnettest assumes that nettest and nettestd reside in /usr/etc on all hosts,
  47. # and also assumes that any remote hosts have an open guest account. Should that
  48. # not be the case (that is, if the remote hosts(s) are not SGI machines), edit 
  49. # the rsh command lines to use appropriate remote logins and the correct remote 
  50. # directory path to nettest and nettestd.
  51. #
  52. # Bidirectional tests may be run by specifying -d , -R , and -L .
  53. # If -R is specified but -L is not, -L defaults to the system hostname
  54. # (which may not be on the same network as the -R IP address).
  55. #
  56. # The number of cases to be run and the send size per case are specified
  57. # in the defined character string "lengths" below. Choose the "lengths" and
  58. # "nbytes" pair appropriate to your test. Edit lengths to add or remove
  59. # send-size cases - customization is encouraged.
  60. #
  61. # The nettest daemon nettestd must be running on the target machine. It must be
  62. # installed in /usr/etc. The nettest progrtam itself must also be installed in
  63. # /usr/etc .
  64.  
  65. USAGE="$0 -p proto [-d dest] [-L laddr] [-R raddr] [-r run] [-N nBytes] [-n nstreams]"
  66.  
  67. # for comparison with 3.3 figures, uncomment the next two lines
  68. #lengths="128 256 512 1024 1536 2048 3072 3584 4096 5120 5400 6144 7168 8192"
  69. #nBytes=`expr 8 \* 1024 \* 1024`
  70.  
  71. # for Ethernet TCP optimum sends, uncomment the next two lines
  72. lengths="128 256 512 1024 1460 2920 5840 7300 8760 11680 14600 17520 35040 43800 58400 61320"
  73. nBytes=`expr 4 \* 1460 \* 1460`
  74.  
  75. # for FDDI MTU-sized TCP tests, uncomment the next two lines.
  76. #lengths="128 256 512 1024 2048 4352 8704 13056 21760 30464 43520 52224 60928"
  77. #nBytes=`expr 20000 \* 4352`
  78.  
  79. myname=`hostname`
  80. run=1
  81. number=1
  82. while getopts "p:d:r:L:R:N:n:B:" c; do
  83.     case $c in
  84.     p) proto="$OPTARG";;
  85.     d) dest="$OPTARG"; destination=yes;;
  86.     r) run="$OPTARG";;
  87.     R) hisname="$OPTARG"; remote=yes;;
  88.     L) myname="$OPTARG";; 
  89.     N) nBytes="$OPTARG";;
  90.     n) number="$OPTARG";;
  91.     B) lengths="$OPTARG";;
  92.     \?) echo $USAGE; exit 1;;
  93.     esac
  94. done
  95. shift `expr $OPTIND - 1`
  96. if test "$#" != 0; then
  97.     echo $USAGE
  98.     exit 1
  99. fi
  100. echo "Starting $proto run $run"
  101. if test "$destination" = "yes"; then
  102.    op=out.
  103.    output=$op$run
  104.    cp /dev/null $output
  105. fi
  106. if test "$remote" = "yes"; then
  107.    bop=remout.
  108.    bout=$bop$run
  109.    cp /dev/null $bout
  110. fi
  111. if test "$destination" = "yes"; then
  112.    if rsh guest@$dest ps -ef | grep nettestd | grep $proto >/dev/null 2>&1; 
  113.       then :
  114.       else
  115.          rsh guest@$dest -n /usr/etc/nettestd -p $proto -b
  116.    fi
  117. fi
  118. if test "$remote" = "yes"; then
  119.    if ps -ef | grep nettestd | grep $proto >/dev/null 2>&1; 
  120.       then :
  121.       else
  122.          /usr/etc/nettestd -p $proto -b
  123.    fi
  124. fi
  125.  
  126.    sleep 2
  127. for buflen in $lengths; do
  128.    nBuf=`expr $nBytes / $buflen`
  129.    echo "$buflen * $nBuf"
  130.    if test "$remote" = "yes"; then
  131.       echo "" >> $remout
  132.       rsh guest@$hisname -n /usr/etc/nettest -p $proto -n $number $myname $nBuf $buflen  >> $remout &
  133.    fi
  134.    if test "$destination" = "yes"; then
  135.       echo "" >> $output
  136.       nettest -p $proto -n $number $dest $nBuf $buflen >> $output
  137.    fi
  138.    wait
  139.    sleep 4
  140. done
  141.